package com.chenxin.wms.process.stock;

import com.chenxin.common.core.domain.AjaxResult;
import com.chenxin.common.core.domain.ProcResult;
import com.chenxin.wms.domain.StockEntity;
import com.chenxin.wms.domain.dto.BatchForbidRequestDTO;
import com.chenxin.wms.domain.dto.TaskRequestDTO;
import com.chenxin.wms.domain.po.StockMoveInfo;

import java.math.BigDecimal;
import java.util.List;

public interface IStockProcess {
    /**
     * 库存新增
     *
     * @param stockEntity
     * @return
     */
    ProcResult procWmsStockInsert(StockEntity stockEntity);

    /**
     * 根据物料编号及数量进行齐套性校验
     *
     * @param spuNo
     * @param reqQty
     * @return
     */
    ProcResult procWmsStockCheck(String spuNo, BigDecimal reqQty);

    /**
     * 库存分配
     *
     * @param spuNo
     * @param reqQty
     * @return
     */
    ProcResult procWmsStockAllocate(String spuNo, BigDecimal reqQty);

    /**
     * 库存移动
     *
     * @param info
     */
    void procWmsStockMove(StockMoveInfo info);

    /**
     * 通过托盘号获取库存列表
     *
     */
    List<StockEntity> getStocksByContNo(String contNo);
    /**
     * 一键禁用（解禁）库存
     *
     * @param request 0-禁用库存 1-解禁库存
     */
    void stockDisables(BatchForbidRequestDTO request);

    /**
     * 原材直发出库
     *
     * @param request 0-禁用库存 1-解禁库存
     */
    void directOut(BatchForbidRequestDTO request);

    /**
     * 出库领料确认
     *
     * @param request
     * @return
     */
    AjaxResult outAffirm(TaskRequestDTO request);
}
